{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## scikit-learn中的逻辑回归"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "np.random.seed(666)\n",
    "X = np.random.normal(0, 1, size=(200, 2))\n",
    "y = np.array((X[:,0]**2+X[:,1])<1.5, dtype='int')\n",
    "for _ in range(20):\n",
    "    y[np.random.randint(200)] = 1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x107fc4eb8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(X[y==0,0], X[y==0,1])\n",
    "plt.scatter(X[y==1,0], X[y==1,1])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    "\n",
    "X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=666)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 使用scikit-learn中的逻辑回归"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,\n",
       "          intercept_scaling=1, max_iter=100, multi_class='ovr', n_jobs=1,\n",
       "          penalty='l2', random_state=None, solver='liblinear', tol=0.0001,\n",
       "          verbose=0, warm_start=False)"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.linear_model import LogisticRegression\n",
    "\n",
    "log_reg = LogisticRegression()\n",
    "log_reg.fit(X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.79333333333333333"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "log_reg.score(X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.85999999999999999"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "log_reg.score(X_test, y_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def plot_decision_boundary(model, axis):\n",
    "    \n",
    "    x0, x1 = np.meshgrid(\n",
    "        np.linspace(axis[0], axis[1], int((axis[1]-axis[0])*100)).reshape(-1, 1),\n",
    "        np.linspace(axis[2], axis[3], int((axis[3]-axis[2])*100)).reshape(-1, 1),\n",
    "    )\n",
    "    X_new = np.c_[x0.ravel(), x1.ravel()]\n",
    "\n",
    "    y_predict = model.predict(X_new)\n",
    "    zz = y_predict.reshape(x0.shape)\n",
    "\n",
    "    from matplotlib.colors import ListedColormap\n",
    "    custom_cmap = ListedColormap(['#EF9A9A','#FFF59D','#90CAF9'])\n",
    "    \n",
    "    plt.contourf(x0, x1, zz, linewidth=5, cmap=custom_cmap)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x111668fd0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_decision_boundary(log_reg, axis=[-4, 4, -4, 4])\n",
    "plt.scatter(X[y==0,0], X[y==0,1])\n",
    "plt.scatter(X[y==1,0], X[y==1,1])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from sklearn.preprocessing import PolynomialFeatures\n",
    "from sklearn.pipeline import Pipeline\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "\n",
    "def PolynomialLogisticRegression(degree):\n",
    "    return Pipeline([\n",
    "        ('poly', PolynomialFeatures(degree=degree)),\n",
    "        ('std_scaler', StandardScaler()),\n",
    "        ('log_reg', LogisticRegression())\n",
    "    ])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Pipeline(steps=[('poly', PolynomialFeatures(degree=2, include_bias=True, interaction_only=False)), ('std_scaler', StandardScaler(copy=True, with_mean=True, with_std=True)), ('log_reg', LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,\n",
       "          intercept_scaling=1, max_iter=100, multi_class='ovr', n_jobs=1,\n",
       "          penalty='l2', random_state=None, solver='liblinear', tol=0.0001,\n",
       "          verbose=0, warm_start=False))])"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "poly_log_reg = PolynomialLogisticRegression(degree=2)\n",
    "poly_log_reg.fit(X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.91333333333333333"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "poly_log_reg.score(X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.93999999999999995"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "poly_log_reg.score(X_test, y_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nRK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1162ce588>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_decision_boundary(poly_log_reg, axis=[-4, 4, -4, 4])\n",
    "plt.scatter(X[y==0,0], X[y==0,1])\n",
    "plt.scatter(X[y==1,0], X[y==1,1])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Pipeline(steps=[('poly', PolynomialFeatures(degree=20, include_bias=True, interaction_only=False)), ('std_scaler', StandardScaler(copy=True, with_mean=True, with_std=True)), ('log_reg', LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,\n",
       "          intercept_scaling=1, max_iter=100, multi_class='ovr', n_jobs=1,\n",
       "          penalty='l2', random_state=None, solver='liblinear', tol=0.0001,\n",
       "          verbose=0, warm_start=False))])"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "poly_log_reg2 = PolynomialLogisticRegression(degree=20)\n",
    "poly_log_reg2.fit(X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.93999999999999995"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "poly_log_reg2.score(X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.92000000000000004"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "poly_log_reg2.score(X_test, y_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXYAAAD8CAYAAABjAo9vAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJztnX+QXNV1579nultMSwyMZMRqPIOMCZaCJczIsKxdY5cx\nkbAQXqgkikMiJTJ2ShU7CKVwithW1l4TK8Z2ikTg2I6Mg7UFG5bIsU2MhC0tYAft+gc/RohBlgpT\nMdYwrISlEY3Usrpnzv7R81r94933o9/t7tevv5+qqVK/fv3e6Vb395577jnniqqCEEJIcuhptwGE\nEELsQmEnhJCEQWEnhJCEQWEnhJCEQWEnhJCEQWEnhJCEYU3YRSQlIs+IyHdtXZMQQkh4bHrsGwHs\nt3g9QgghDWBF2EVkCMB1AO6xcT1CCCGNk7Z0nb8HcBuAPtMJIrIewHoAmHPWWZe/ZcECS7cmhJDu\nYPQXv3hVVef7nRdZ2EXk/QAOq+pTInKV6TxV3QpgKwAsu/BCfWzTpqi3JoSQrmLu+vW/CHKejVDM\nCIDrReQ/ADwA4GoRuc/CdQkhhDRAZGFX1U+o6pCqXgjgRgCPqurayJYRQghpCOaxE0JIwrC1eAoA\nUNXHATxu85qEEELCQY+dEEISBoWdEEISBoWdEEISBoWdEEISBoWdEEISBoWdEEISBoWdEEISBoWd\nEEIShtUCpU5lRy6Lu4/24ZViCgvSU9gwL4dVffl2m0UIIQ3R9cK+I5fF7UfOxSktTV4mimncfuRc\nAKC4E0I6kq4Pxdx9tK8s6g6ntAd3HzW2lieEkFjT9cL+SjEV6jghhMSdrhf2BempUMcJISTudL2w\nb5iXQ69MVx3rlWlsmJdrk0WEEBKNrl88dRZImRVDCEkKXS/sQEncKeSEkKTQ9aEYQghJGhR2QghJ\nGJGFXUR6ReQnIrJXRMZE5DM2DCOEENIYNmLsvwZwtaq+LiIZAE+IyE5V/ZGFaxNCCAlJZGFXVQXw\n+szDzMyfRr0uIYSQxrASYxeRlIiMAjgMYJeq/tjGdQkhhITHirCr6pSqDgMYAnCliCytPUdE1ovI\nkyLy5Ks5Fv8QQkizsJoVo6qTAB4DsNLlua2qeoWqXiHnX4htw+ts3poQQsgMkWPsIjIfQEFVJ0Uk\nC2AFgM8Hea2XuG9cch8m72e/FkIICYuNrJgBANtEJIXSDOBBVf1u1ItuGVsLDNcfXze6LeqlCSEk\n0djIinkWwDILtgSi1sun0BNCSDUd3yumUugZviGEkAQIeyWV4Rt68oSQbiVRwl5JpSdPkSeEdBNd\n0QRs2/A6plcSQrqGrhB2B4o7IaQb6CphB+i9E0KST9cJuwPFnRCSVLpW2AF674SQZNLVwu5AcSeE\nJAkK+wwUd0JIUqCwV0BxJ4QkAQp7DRT3eLEjl8W1vzgfy34+gGt/cT525LLtNomQ2ENhd4HiHg92\n5LK4/ci5mCimoRBMFNO4/ci5FHdCfKCwG6C4t5+7j/bhlFZ/RU9pD+4+2tcmiwjpDCjsHlDc28sr\nxVSo44SQEhR2H/rXUETaxYK0ewtm03FCSAkKuw9bxta224SuZcO8HHpluupYr0xjwzxuhk6IFxT2\nADAk0x5W9eXxqfnHMZAuQqAYSBfxqfnHsaov327TCIk1ie3Hbpttw+vY170NrOrLU8gJCUlkj11E\nLhCRx0TkeREZE5GNNgwjhBDSGDZCMUUAH1PVtwJ4B4A/E5G3Wrhu7GBIhhDSCUQWdlWdUNWnZ/6d\nA7AfwGDU68YVZskQQuKO1cVTEbkQwDIAP3Z5br2IPCkiT74++arN27YUZsm0FrYUICQ81oRdRM4G\n8E0Af66qr9U+r6pbVfUKVb3i7P7zbN22LTAkE45GxZktBQhpDCvCLiIZlET9flX9VxvXJMkgiji3\no6UAZwgkCdjIihEAXwewX1XvjG5SZ0CvPRhRxLnVLQWSPkPgoNU92PDYRwD8EYCrRWR05m+VheuS\nBBBFnE2tA87tmXY9HpVmzRBaIah+94jDoMWBpXXYyIp5QlVFVd+mqsMzfztsGBd36LX7E6Xfy4Z5\nOWSgdcdfn5amiILNGYIjYsM/H8AnD/c3VVCDiHbQQatZ4huHgaWbYEsB0lSi9HtZ1ZfHbKn3zoto\nTpzdVtOxShEDZObvDLbXCYKIdpBBq5niyxbMrYXC3oW0ckoctd/La+r+FW1GnN1W0zE3EavFpv0T\nhmtVHg8yaDVTfNmCubVQ2CPSaeGYVkyJawcOANj5psN45jcmsPNNh0P1fmll615bTceirB80gulH\nXHk8yKDVTPFlC+bWQmHvMpo9JbY9cLS6de+qvnzDg5CDn1jZtt+0lFx5PMig1UzxZQvm1kJht0An\nee3NnhLbHjhsedGtDD+5iRig5b+zXBaEozBgEN7a436DVjPFly2YWwvb9nYZC9JTM4t69cdt0IyB\nI2rrXmcW4Qw4zizCubZtnGvefbQPrxRTOLdnGq9PC4ozftRxTVm9/4Z5uar3BzQmyLV2L0hPYcO8\nnLXPiC2YWwc9dkt0SnOwZk+JbU7ng3rZfue1IyOj0jvO9mhZ1Jtxf5vesI1QFGk/9Ni7jGZ7Zba8\nx6BedpDzTLOFiWLaGEazualKKzJC6A2TSijsltgythbr0Bk7LDUqAjtyWd8BwdbA4eVlV17LdN7n\ncgOYe9H/w8iBzfh57zhenn4DvlD8AB6aflf5vL5sr/H+QdZNgop/s8NfhNRCYSeBCBOntuE9enm5\n/WtS5fbJEz/f5Xree3+9G8v33YvMVMmOoZ5XcUfmHqAAPDT9LqRTPRhZerHx/ovGt2PkwGb05ceR\nyw7ixfkrcNGRXeXHexZvqhN/k9DbmsUQEhQKOwlEUA/aFiYv9+xstqonfl+2F7n8qbrzPj7rX8qi\n7jBbTuO29IN4LLUcI0svxiULB1zvvWh8O5bvu7X8+nPyh3DZS/eW60fPyR/C8n23AgAODq4uv65S\n6DcuuQ+T95c88maHvwiphYunFumktMewtLpycMO8HNKp6q+nm5c9svRi1/MG4L6Zy2DPr/Anq95t\nFHUAGDmwuW5QkJpzMlN5jBzYbLzGlrG12Da8rvyd4KIkaSX02EkgWhUnrhwcl780gT3PvYBc/hT6\nsr2uXrbzuPa83AuDOCd/qO76uWz1ro21IZc9izehLz8eyNag5znvqdKLD0uQ9Q1CHCjsJBDNjhO7\nzXYuWTjg6Vl7nbcntakqnAIAhVQWexZvKj92C7ks33cr8pl+zC4c871v7SDhx5axtcBw6d9hsm5a\nnYdPOh8KOwlEM+LElYugtnFi37XeeGVM3C3kkpnKo9iTRSGVrXpOUR2OqR0kanGbCbjF44MIfKvX\nN0jnQ2G3TP+aVMPT7bhjM1d62/A6YMzKpYzUirsTE3eOm0IpvYVjeGT4yzOvOwRAIBVtABSCscEb\nq4S6EtNMoPLeDtuG1/mGaNgZkYSFi6ekpVQuKNpi0fh23PToMtzy8Pm46dFlWDS+vXx8+b5bcU7+\nEARaFljneVMoJZcdxMHB1bj36meQyw5ViToACBQXHXFPswTMMwHTYquz0GqCnRFJWCjslmlWaKGT\nyJx4Cn2vfBbnjv8F+l75LDInnmqKoAPe4u0nsHsWb0IhVd1+oDbEYvLqvRZOG3kNUBr03FpTsDMi\nCYsVYReRfxKRwyLynI3rkc4lc+IpzD6+HampSQiA1NQkZuW+XfaSw2DyxCsxifd7xj45E0apxxHY\ng4OrsfvSO/FadggKwWvZIey+9M6qcImXV2+ikdc4uHnv7IxIwmIrxv4NAF8C8D8sXY90KL25nRAt\nVB1zvGRTTNqNoHFqkxecLRyryz13qBTYg4OrPe3as9g7u8ZtkdTvNUHYNryuamGVvWBIGKx47Kr6\nQwBHbVyLdDY9U5Oux4PmfDsEjVPnM/2urzeJeliB9fLqTWEgAL4zgSCEDV+1suc8iTcty4oRkfUA\n1gPA3AULW3Vb0mKmU/1IuYh72JzvIHHqRePbMat4ou6c2tTEyuONCKzJq3/P2CeNg8+9Vz8T+j4m\nar13N5jrTipp2eKpqm5V1StU9Yqz+89r1W0JWuvJff/Sz/kuSLpRG08/lZnrel7lADFyYDPSerru\nHDV8rXPZIWti+559tyFrKGIKOzsJgp/n3o6e8yS+MCsm4bRi82qglL+/bXhdoAXJWtxCGpliDkWZ\nVXVe0IwVwXRDg0tQFo1vx2UvfSNQDN8mXuLOXHdSCYU94bTKk6tM83RywO+67nCgkIRbPD2tBZxO\nz/EcIEzx9dzMuVFj3F721ua2OyhgbQBxwyTuzHUnlViJsYvIPwO4CsB5InIIwKdV9es2rk2iEcWT\ny5x4Cr25neiZmsR0qh+n+q5FYc7ldec5YrM/QNMuN8yZLZO465qDrs+Z4utFyZTL920JeS1eoZZT\nmXlNu6+DW8ydPd9JJbayYv5AVQdUNaOqQxT1+NCoJ+eWjz77+HZkTjxVPscJvwAlUd/99PPl3ui5\n/Cnsfvp57H9pwtdGc+hCPfPX3eLrhXRf04XVZK9C8PgScytfmzDXnXjBUEzCabRq0S0fXbSA3tzO\n8uPK8Mue515Acar6PsWpaex57gVfG90qQIFSZkttGwAHrz4vQLDipkZxs1ch2Lvwg5EHlTB2u4k7\ne74TgE3AEoVb6GRVXyl0ErYroykf3TleKypuuxh5Ha/EEcOrxjaht3DUuKlFbUWoqd960OImvw6M\nfvY28lov3OxeOfpRrBz9CHLZIdd79K9J4X9+dVb5//fcnmmoAq9pD/u2dzEU9oTghE4cL9sJnZwE\nsKrv8tA/blM++nSq33UBz7RF3VmZYF+xg4OrMXJgM7IF9zq3Wg/dq7rTq7jJEUaT+A8c/Und3qZu\ngt1oDN9rMHHfuUmr7HPuDZTCX7/5b0M4dfo0nMz9yekzayfMZe9eGIpJCEFCJ2E41XctVDJVx1Qy\nONV3rev5b17gXptQmJoKFGcHvBcla+PaXmmVQYqbTOJ/2UvfMHaDjIpft0m//PfKyltnTePU6QLM\ndbbMZe9W6LEnBL/QSVgKcy7HSaAutHPPyF115+5/aQLPv/Sy63WmpxV7nnvBMzvG8WJhTCEU1xRC\nk9fsFaZxMOfAV9sQpM9N0JCO30zCZHcljt1uaxommpnLHsct++JoU6uhx54QplPuOd2m40EozLkc\nuQV/heODf4vcgr9yFXXAX2S84uzVXmw9jSxK7lm8CcWa2YaTBlm2KUQRUV/+kNFr9/PCq6/jPZMw\nLSJX4tgdZO3CoVm57K0qfut0m9oBhT0hhA2d2MRPZPqyvcbn3LxYoOS7v5YdwiPDX8YPLv1CA1bV\nDhPVj90zW8xXMol1mE01/Nr5HhxcjbHBG412VFbP/n7vT/DErFvw4ll/iCdm3YLre55wfU0zc9mD\nFr+1sqUFWyuUoLAnhMKcy3Hy3NWYSvVDAUyl+nHy3NWuBUWN4LYBhIOXcKdTPRhZerH5tca4sjTc\nSMstxz2tp6vEtjZGPy0pj0i1WazNPd/rjwfZ2GPRxLdd7ZhGT1VXydvlqxjqeRU9Agz1vIo7MvfU\niHvzc9mDFL+12oNma4USjLEniMKcy60JeS1eO0ONLL0Yu59+vi4cc1YmjfcO/6ZnfN0vbbGRlMKg\nOxhVxuhvefj8ANc9hJseXVZlj0oKovWhDpV6IQmSJmlqLCaYrnr9WVo9S5otp3Fb+kE8dPpdAICB\n9BR2vumw73uKwoL0FCaK9RJSGfpp9UbcQWzqBijsJDKOcDfSTmDP4k1YsfcWpCsyeoqSwYvzVwTe\nELqWfKYfs10E0tRbBjAPMNVI+RzHHjdRB1B3vHaQemT4yw3nvZsGrjfKrwCUZkmtaCUQpI1Bqz1o\ntlYoQWGPQKMeZacRZLOHSxYOBBJyd+rj4Ysmvu0au37f3psBeIu7GIIqpuOAe158JQpxzZiZNnjs\nuexQ+d9BC6aAUq8Zt1z+U5l55X+bBq6X9Q3lQfXIwgHAp4d7VByP2ysDpdUedBCbugEKe4N4/VhJ\ncEzx8FShvg8MAPTolG8hUa8hnGE6DtSHSfKZfggEvYVjyGUHjbF00SkUUlnPbfCCFEw5PL5kM1bs\n3Vj1mRRlVrkHjVfzs31v/2v8yeC7y8f616QweX9zQxB+W/a1w4PmNoIU9oYx/VivffGTmOxrXtvW\nqITN8Q2zNVsjNLIphVNIZKrKDJLH7oYpL37R+HasHP0o3PJmnFJ/r5lb0Ji/YwNgjsN7NT/7ztQI\n9uz493I4bP9Lv4U78H3P99xs6EG3Bwp7gxgF6bVjQEwzq+K4fZpJhE9l5iE9nTeGRrwKiWxsJl2J\nqf+6Uzjl114g7EDjdT2v5meVC9hOd82Pv/0a3HG0/eJOIW8tTHdsEKP3d477lm5xIGyOr1eKoy1M\nKYCPL9mM3ZfeiWmX7BITjuj5bUAdtuujKQwDaKA1lSBpjiaCbhk4gfMa7q5Jkgc99gYxeYWne1a2\n0SrvUItfhkLtay/bOYxLmrzveJAUwNrP2W0hE6gebN283jCLmJWESWl0o9FukG72FiWDosyqCsco\nBAv0CJ6YdQu+UPwAHpp+V/m5XP5U1cYcLLfvDijsDWL6sb7zSP3CVqvwC7V4ZSi4vfbI088DQIRs\nl2B4hR7cPucX56/AkvEHQoVaFo1vx/v23oyeGoEO0gvGK6XxpkeXBRLpRrpBmrYMPJmZi5Pp82dm\nEqVBTgQYklKhEgooi7tTPOa0941bKI40Bwp7BNx+rO880twUMy/8ikG8MhTcXutM5Zst7H64fc4T\n864M7AE7nm+tqDv4LeDmskOuMfLKjUAcO23it2XgTY8uq7OrslCpsup3y9haPHB0Z0uLhUj7sLXn\n6UoAWwCkANyjqnfYuC4Jh1+oxStDYdNhw8bQIZpNNRO3moF7r34m0GtN/WgcTHFrB78c9yBevxdu\n7w0AVHoMOfKlkJNXoZJbkRjL7buHyMIuIikA/wBgBYBDAH4qIg+p6vNRr03CEaQYxJShYHqtVx+Y\nsDRa0NVobNzBzyNXY9stlO8xcPQnVSmWYe9hwu29rdh7CwBxnWFUhpyM1bI9PXhWfxe5FwaxJ3Xm\nMz47m3UdqLut3L4bsOGxXwngBVV9EQBE5AEANwCIrbDvf2miofL3uBOlGMTttaYGXo18fovGt1cV\n3pQEbCMAf3EOU+DjxqnMXOPOTECpP8stD88HAOQzc/GDJX9Tvq8zCGWKJ42iXnpdf10fmSC2meLo\nbkxLqpzdA7jPJBQoDwi1A+DI0ovxg9FnkS9ELxbiImy8sSHsgwB+WfH4EID/UnuSiKwHsB4A5i5o\ncqqFB87OM7X5vkD0RcJ1TS7h9iNKMUjta8/OZl0FO8jn5+aZXzW2ybXC9KoxfwEMU+Djhp9HXtlo\nYHbhGK4ZvRkqPWWBPSd/yPMKU+jBrOKJcpl/kBnFmc/Irz9NhZ06XXW92oVllR7PxWHn/2fvM6OR\nBDmO9RCkmpYtnqrqVgBbAWDhJZd7/9KaiNumEHFZJLRBlGIQ57X9a1LGbo5en98NqT14z9gnkS0c\nK4ulI3JpQ3y618OTdjB53G6xcbdBJVsIt4tUClNAjUB6tfTtwTSkZtDymlHUhl+C4lY7EaRDZeUA\neMnCAXz12v8dqdVAqzs2kvDYEPZxABdUPB6aORZLTIuBcVkkbAdh8tdNn9N7f70by/fd6ypWmam8\nj898BjdhNnnctcdNsXhT0yyFt2AHPd90DbcZhSnt0u9eCiBdPIFF49uNs4CgFa5bxtZiHRqfXXIR\nNv7YqDz9KYC3iMibRWQWgBsBPGThuk3BtBhoc5Gw1UTZocZtI4TdTz9v3IDa9Dl9fNa/hPZAgVJM\n28Ftm7mVox819iiv9cRNsfj01GnXys/KjolBbQ0z1awVVL+0y0oEpc01tOLx7MIxz821w1S4RukB\nZFps5SJsfIgs7KpaBHAzgO8B2A/gQVUdi3rdZjGy9GKkU9Vv22+XnzgTdYcar/x1N0yf3wBe9bzP\nqcw8131InYVKwF2YBWr0iGuF0xRzz0yfwNjgjXUtBh5fshlFmVV3/hRSdbYWUln8YMnfVLXjraTW\nSjdB9Uu7rEUwXffeTTs5Ad6tFGyyYV4OvVIdjuvGnudxxkqMXVV3ANhh41rNJsqmEF5sXHIfJkdt\nWBiOqPFO0/TZFHK5ZOEA/vOxh3HtoTuxQI/gFZmPnUO3Ivcr80YVTu8XwLusPkzKoJtwmkIRAuCi\nI7uMee9XjW0qx/pNWTGVtrq1khgbvNHYRriR9+eF13XCVLg22taXHRvjT1dWnkbbFCJeRI13hs1f\nXzS+HcsnbkcGeUCAN+II/njidowN3lhX5q8oeeqPLzmziNhIF8RKFGda5dZea8/iTVg5+hFXD98k\nhkHaGbgdczJaVFJIT+Vx0ZFdvimOwXZp8sev/XBQosTa2bEx3rC7oyWavaGBiajxTrdpNQC8ecF5\nrueb4tgXHdlVFwZ4ZPgr2HrNgcAepFuMuJZcdsi4yfXBwdUecXMN3M3RD6c1cDGVRY9OVbUW8Lp+\nkPdXSSE1p+GukEFpdr990h4o7B1O1Hjnqr48/uvZJ1G7icTzL73suoDqlVN+cHA17r36Gdx13eHy\n5hNh2uNWx4iDxa1reXzJZlfxDCq+QfEqmjLhvL+grYh7pk+7rg3YiJnvf2kC9+z4d/zdN3eFXnAn\n8acrQzFJwka884l8L2qT9ky5/UFS6hppAVC/2fNXAIRvdVsbKjEtPkYVx0aKppz3KDpV13rYLZUy\nrQXPtYFGqS0yY4FR8qCwJ4Co8c4wC6hBdicK0wJg0fj28uJlbVHT7kvvbEjUnHusHP2I6/M2FjHD\n7opUX5SkMzMSRS47ZKxAtbXgWolbkRkLjJIFQzEWaHcrgaiY4vFuC6hBUuqCerOO2GUrRN3BL6zh\nhXPdoGmSpmt47bQUJmfcKUpyS+V01gxMaZS2FkqrrmnIeLpy+kfoe+WzOHf8L9D3ymeROfGU9XuT\n1kCPnYRqAAb4p9QF9Wb98rob9Va9rhskTh8klBR0V6SgveCDzIQa7Y5Zd89sb524X9/zBO7I3IPU\nVKk1QmpqEmdNlgazwpzLQ9+DtBcKOylPvz+XG7CS2//i/BV1LW4dkaoUp9oF21r8vFWT0JkGBAUC\nLT4GDSUFyRn3G7yc9+g3UERtXVxl09KLq2LsAHBb5kFkpaZJGwr49fFHAAp7x0Fh7wBa0SJ1VV8e\nR9797sjXWTS+HUvGH6hZGBSMDd4IoL64x0SQre5MQmeeMQxF6t/uHA/jOXvNOmrfo9dAYRps3jf6\n0fJrg+JWpPfG6V+5npudPgb3JsIkzlDYI9LsitNOa5Fqagtw0ZFduOjILl9RV5yp/vQSK6PQ7b0Z\nz17wx3XFUkXJIFM8iVsePt9XjL1CSWE9Z9O1anur+2EaIHqgMxtzhBf3yhnZy//2BgxJfVuIl/U8\nnB34qiQucPE0Is0uTPJqGWCT/jX1mTF+C4hu53lld3iFSCqLmr52zcGGe7T36BSWjD9Qlf99MjMX\ngMws0qpvPrvXwmjY/HXTtb532ZdCCbFXWCqthYYXmh3u7lmLk1rdN+ekzsLX1G6fGdIaKOwxp10t\nUt06LbqJYe15XpkoJnHKZYdw13WHjRWlpuuZcCphnWKpYnpO3SYfjTbTCpu/HqYxl9dAWmpfbCZq\nWuTxSz+ETVPrcWj6PEyr4ND0efhvxQ9j8dxLI12XtAeGYmJOkH1MbVC7sUbQBcQgHQsrY8luW7ll\niic9+4y74bfBdKXQeYmxKV5uineHzV8H6mPnjoDXbl4dZXE0alrkJQsHsB/rce1zVyOXP4WBdBEb\n3nBmLcdZ55koptADYBrAAJt/xRYKe8yJso9pFIJ6pl7hFUBc49mVuywJgGzhqKeIeS1WmjatqBQ6\nkxifyswNLaZB0hK9MMXoiz1Zz4F05MBm42yoKBkr/WNq4+6rZuozatd5nFyauK/3dDMMxURg45L7\nmn6PVX15fGr+cQykixAoBtJFfGr+8ab/kMxhk8GA57mHVw4OrkYxPSdwQZJXSOjg4Gp877Iv1cWw\nizIL6eKJckjjxfkrXOPcCnUV06vGzCIZtee5aSZk2iLQGTi9BtBdl91lvec6cGbdxW2dx6EZ6z0k\nOhT2DmBVXx4733QYz/zGBHa+6XBLvKOglZVhKjAdwsSp/RYra4U2n5kHQDG7cKw8ENQupjpibNqZ\nqbdw1LNRWGWzszDrAqb36IUzcHoNoM0QdeBMeM5vPYdb4sUPCnsE2tWq1zZurVuDeqaNeLBBZwNA\nsEGgUmgL6dlIa3Xmde1i6pn+M+7BDQEiZ5mYyGf6Dcfneg6QQQbQRrKY/Dpv9q9J+a7ncEu8+MEY\nOzESdDeeMLv2AOHi1GEXK4MUF9U2HXM//1DoBV0/Fo1vx6ziibrjlVsEmtYSbFWmhs3D3zK2Fhvm\nPVi3zuPALfHiSSRhF5HfA/DfAVwC4EpVfdKGUSTZBO2zAoRfrPQrLlqxd2Nd6qMbAjRcsm9i5MBm\n13sX0n2BdphqpDI1SBaTU9i1cvSjrv8Xf/inp4GvHmdWTAcR1WN/DsDvAPhHC7aQLiLMbAAI3pfd\nq0+NSVhNZKbyWDn6EYwc2Nxww60gvXF6DbH+METNYnIyi9w8+C1ja7GubxsFvIOIJOyquh8ARLwm\ntcmkU1r1+vWZ6YSt0YIOAu59agCdCSE0UsRTufOSY0sQFo1vr0rr9CKf6a/Law87iAQNWQXZd9XN\n0982vK5jvvOkhYunIrJeRJ4UkSdfn6zvSUHs4+QfTxTTUEg57zip26C596kBZk2fwPJ9t+JUZq7x\ntd59JsP1h3fi2LMDiHpRMphVPOFb4etHlCwmN5qxwUensiOXxbW/OB/Lfj7QMdsI+gq7iOwWkedc\n/m4IcyNV3aqqV6jqFWf3u2+UTOzSqj4zccFLjDJTeSgURZlV95zbtnRhr1+JXzVuZW+cQrovVLsD\nE41mMZn2X3VbnO6E2Z1tOtU58g3FqOryVhhC7OPXZ6Z/TQoYa6VFZmxsIuEXZsgWJvHI8JfLWTEA\noOhBD6alUjfNAAANpElEQVSNr6m9fhD8BgBn1yQAuOXh8xu6hhuNZDHVb9nnvTjdvyaVmDTfIHg5\nR3Fec2Aee4Ix5Rc7x2v7w7SLoA3H/PALM+Sygzg4uBpbrzmAu647gruuO1IVj/ciTNsArwGg9jph\ncvqbQdg6hLh8Z1pFu5rwRSWSsIvIb4vIIQDvBPCwiHzPjlnxphWtBGywYV4OvVLtjcYx7zhsK1wT\njkidzMytk2uvPHkvFMDJzNxQbQPcBphSn/l5dddppHLXNmErabspJOPnHMWVSMKuqt9S1SFVPUtV\n/5Oqvs+WYSQ67eozE5awrXC9ODi4Gl+75iAeGf5KIC/UXYRLfrwTfy6m54S2odYLfmT4K9h6zQEr\nlbtxwK1/fxLpFOeoFlaeNkAnxRhX9eVdhTxOXlcjrXAr8Wq964dbnvyL81dU7cDUSLpjmGrcsJW7\ncWDL2FqsQ/LTH53fTrO3prQNhZ00Hb+F0SitcG1s8lwrrDc9uixQFWe30y257SbnKM5w8ZQ0lSAL\no1HCEbbi85XYDA21kzDNvkiyoMcekmZvXt0KWpnmGLSHSaPhiGaIcNTQUBwIO5NpNN20W7z2ToMe\nexfSypS1Znu/zUgXbGemii0vO8xMJmq6aZzWa0gJCjtpKs3O07YlwpWCOnJgs+vGHF4erA1BtpXP\nD9jdzIR0HgzFhKSTMmLcaLV3FXWPUD/Cdn90wy1ssWT8AU8xrwxd5DP9mFU8UW4N0MgCrvMebC3a\nhgkn2ZhVMSQTL+ixk6bSzDxtx0teOfpRAMAjw18OvVUdEN5jrfWsZxeOWen3YjNsFWYmY2tWxZBM\nfKDH3kW064fXjDxtG2mODmEF1a/Jl9/rTdhctLWxmcmL81eEbifcbb1k4gqFnXQk7QpbAMEFO6wg\n2w5btaNIq1sKl+IOQzFdQObEU+jPbU5UPnNQLzvIombYBdgggt2IILezvUBtv5iLjuxqeEGVIZn2\nQ4894WROPIXZx7cDWmh4N6A4EsTLDhquCbsA6+ZZFyWDQroPvYVjDbcddmyJw/9L1Hg/F1PbC4U9\nBJ34Re3N7YRooepYJ5TH22hDECZcE7a3i3P9KP3j40wSirS6GQp7wqjd4/T/pCddz+vLj1vZ3KIZ\nBPG0g4hrM4uj4uJZNwsb8X567e2Dwp4gnG28nB1fJoppvJx6AwblV3XnnsrMtZZVYhtbbQia7XW2\nemBs5f1szUoo7u2Bwp4g3Lbx+nzh9/H5WV9HFr8uHyukslBobDsY2vK0bWeZVArrqcxcZIo5pGfC\nXM0eGG2mdwbF1qyE4t56mBWTINy263po+l34y9Mfrsu0yBbMIZp2Y6tgxmaWSW1RUrZwtCzqDs0s\nw+/0sv9u2ZgjLtBjTxAL0lOYKNb/lz521nLce/Vnqo6NHNgc28Uxm562La+zWUVJQen0VsLMb28t\nUfc8/aKI/ExEnhWRb4lIvy3DSHjctvFKp3owsvTiunPjsNemiThuF9esoiQvKnPwVdx/qnEYiIPC\n/PbWEdVj3wXgE6paFJHPA/gEgL+Mblb86IQ+7JXbeE0U0+jL9mJk6cW4ZOFA3blxT9mLW9aJaSG2\nEpsDY21MXXQKCkCadL9WwXh7a4gk7Kr6/YqHPwIQn19il7KqL48j7/5AoHPjJp5xxr0oaRZOp+cg\nW5i0PjC6hX4EpQ22RadjNxCHgeLefGzG2D8E4H+ZnhSR9QDWA8DcBQst3paQ5tPqGY4p9CM6jbuu\nO9yUe7YSNgtrLr7CLiK7ASxweWqTqn5n5pxNAIoA7jddR1W3AtgKAAsvuVwbspb4wjhm82jlDCfp\nlZ9cTG0uvounqrpcVZe6/Dmi/kEA7wewRlUTK9id4F0wpSw5xHlx2xZ0QppH1KyYlQBuA3C9qp60\nYxJplFbuZUqaSxwzg5oBxb05RI2xfwnAWQB2iQgA/EhV/zSyVSQ0/IEkj25Z3OZiqn0ieeyqerGq\nXqCqwzN/FPU2wBAM6XTomNiFLQUSAEMwJAnQQbEHhb3DoadDksKWsbX8PluCwt7B0MMhhLhBYe9g\nGIIhSWTb8Do6LRGhsHconLKSJEOnJRoU9g6Eok66AX7PG4fC3mHwy066CX7fG4PC3kEw7ki6EYp7\neCjsHQTjjqRbobiHg8LeIfCLTbodzliDQ2HvACjqhLCAKQwU9pjDLzIhJCwU9hhDUSekHv4u/KGw\nxxR+eQkxw9+HNxT2GMIvLSH+8HdihsIekFatyPPLSkhw+Htxh8IeI/glTS6LxrfjpkeX4ZaHz8dN\njy7DovHt7TYpMfB3Uw+FPSbwy5lcFo1vx/J9t+Kc/CEIFOfkD2H5vlsp7hZhjns1UTez/msReVZE\nRkXk+yLyRluGxY1mVn1S1JPNyIHNyEzlq45lpvIYObC5TRYlD1ZlVxPVY/+iqr5NVYcBfBfApyzY\n1FVQ1JNPX3481HHSGPwtnSHqZtavVTycA0CjmdNd8IvYHeSyg6GOk8ZhSKZE5Bi7iGwWkV8CWIOE\ne+y2hHjb8DqKehexZ/EmFFLZqmOFVBZ7Fm9qk0XJhSGZEr7CLiK7ReQ5l78bAEBVN6nqBQDuB3Cz\nx3XWi8iTIvLk65Ov2nsHHQYFvfs4OLgauy+9E69lh6AQvJYdwu5L78TBwdXtNi2R8DcGpP1OUNXl\nAa91P4AdAD5tuM5WAFsBYOEll3dlyIZfuO7l4OBqCjlpGVGzYt5S8fAGAD+LZk78aUScGXohpLV0\n++8taoz9jpmwzLMArgGw0YJNsSfMAk23f8EIaRfd/NvzDcV4oaq/a8uQTmLL2FpsXHMfJu+fMp7T\nzV8qQkh7iSTs3cyWsbXAMLBudFv5WP+aFFflCYkR/WtSng5YUqGwR6TKMx9rnx2EkHq2jK3FOmzz\nPzFhsFcMIYQkDAo7IYQkDAo7IYQkDAo7IYQkDAo7IYQkDAo7IYQkDAo7IYQkDAo7ISSxbFxyX7tN\naAsUdkJIYunGqlOAwk4ISSiV7T66DQo7ISRxdLOoAxR2QkjC6HZRB9gEjBCSEDYu8W6l3U1Q2Akh\nHY3joU+OttmQGEFhJ4R0JAy5mKGwE0I6AoZagkNhD0mtl8At8AhpDrVCzlBLcKwIu4h8DMDfApiv\nqq/auGZc8JvuuT1PsSckHG6/Iwp540QWdhG5AMA1AF6Kbk48iDrl4z6ohNTjlPcznNJ8bHjsfwfg\nNgDfsXCttrNudJtVT2Hy/qm6PRfp0ZOk4jXDpQfeOkRVG3+xyA0ArlbVjSLyHwCuMIViRGQ9gPUz\nD5cCeK7hG7eO8wB0QmiJdtqjE2wEaKdtOsXOxara53eSr7CLyG4AC1ye2gTgkwCuUdXjfsJec80n\nVfUKv/PaDe20SyfY2Qk2ArTTNkmz0zcUo6rLDTe4FMCbAewVEQAYAvC0iFypqq+EtJcQQoglGo6x\nq+o+AOc7j8N47IQQQppHu5qAbW3TfcNCO+3SCXZ2go0A7bRNouyMtHhKCCEkfrBtLyGEJAwKOyGE\nJIy2C7uIfExEVETOa7ctbojIX4vIsyIyKiLfF5E3ttumWkTkiyLysxk7vyUi/e22yQ0R+T0RGROR\naRGJXWqZiKwUkQMi8oKIfLzd9rghIv8kIodFJNZ1ICJygYg8JiLPz/yfb2y3TbWISK+I/ERE9s7Y\n+Jl22+SFiKRE5BkR+a7fuW0V9g5pR/BFVX2bqg4D+C6AT7XbIBd2AViqqm8DcBDAJ9psj4nnAPwO\ngB+225BaRCQF4B8AXAvgrQD+QETe2l6rXPkGgJXtNiIARQAfU9W3AngHgD+L4ef5a5QKLC8DMAxg\npYi8o802ebERwP4gJ7bbY3faEcR2BVdVX6t4OAcxtFVVv6+qxZmHP0KppiB2qOp+VT3QbjsMXAng\nBVV9UVVPA3gAwA1ttqkOVf0hgKPttsMPVZ1Q1adn/p1DSZAG22tVNVri9ZmHmZm/2P2+AUBEhgBc\nB+CeIOe3Tdhn2hGMq+redtkQFBHZLCK/BLAG8fTYK/kQgJ3tNqIDGQTwy4rHhxAzIepURORCAMsA\n/Li9ltQzE94YBXAYwC5VjZ2NM/w9Sk7wdJCTm9qPPUg7gmbePyhedqrqd1R1E4BNIvIJADcD+HRL\nDYS/jTPnbEJpCnx/K22rJIidpHsQkbMBfBPAn9fMfmOBqk4BGJ5Zl/qWiCxV1VitX4jI+wEcVtWn\nROSqIK9pqrB3SjsCk50u3A9gB9og7H42isgHAbwfwG9pG4sTQnyWcWMcwAUVj4dmjpEGEZEMSqJ+\nv6r+a7vt8UJVJ0XkMZTWL2Il7ABGAFwvIqsA9AI4R0TuU1VjP/C2hGJUdZ+qnq+qF6rqhShNe98e\nxx4zIvKWioc3APhZu2wxISIrUZqmXa+qJ9ttT4fyUwBvEZE3i8gsADcCeKjNNnUsUvLYvg5gv6re\n2W573BCR+U4GmYhkAaxADH/fqvoJVR2a0cobATzqJepA+xdPO4E7ROQ5EXkWpdBR7NK2AHwJQB+A\nXTNpmV9tt0FuiMhvi8ghAO8E8LCIfK/dNjnMLD7fDOB7KC30PaiqY+21qh4R+WcA/xfAYhE5JCIf\nbrdNBkYA/BGAq2e+k6MzHmecGADw2Mxv+6coxdh9Uwk7AbYUIISQhEGPnRBCEgaFnRBCEgaFnRBC\nEgaFnRBCEgaFnRBCEgaFnRBCEgaFnRBCEsb/B0x5GRwAUPOEAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x11a8a0320>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_decision_boundary(poly_log_reg2, axis=[-4, 4, -4, 4])\n",
    "plt.scatter(X[y==0,0], X[y==0,1])\n",
    "plt.scatter(X[y==1,0], X[y==1,1])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Pipeline(steps=[('poly', PolynomialFeatures(degree=20, include_bias=True, interaction_only=False)), ('std_scaler', StandardScaler(copy=True, with_mean=True, with_std=True)), ('log_reg', LogisticRegression(C=0.1, class_weight=None, dual=False, fit_intercept=True,\n",
       "          intercept_scaling=1, max_iter=100, multi_class='ovr', n_jobs=1,\n",
       "          penalty='l2', random_state=None, solver='liblinear', tol=0.0001,\n",
       "          verbose=0, warm_start=False))])"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "def PolynomialLogisticRegression(degree, C):\n",
    "    return Pipeline([\n",
    "        ('poly', PolynomialFeatures(degree=degree)),\n",
    "        ('std_scaler', StandardScaler()),\n",
    "        ('log_reg', LogisticRegression(C=C))\n",
    "    ])\n",
    "\n",
    "poly_log_reg3 = PolynomialLogisticRegression(degree=20, C=0.1)\n",
    "poly_log_reg3.fit(X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.85333333333333339"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "poly_log_reg3.score(X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.92000000000000004"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "poly_log_reg3.score(X_test, y_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXYAAAD8CAYAAABjAo9vAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJztnX+QXNV1579nultMSx4YCUQ0zCBjgsUKCTOyHG9SY8qY\nSFjILqjEipdEJLIdl8pmEUpwLbGtLF6TUvwrRQw4tlfBwdqCDevIccwagS0VYIMq/oGNBBpkqTAb\nsIahJBCCBs1Y3TNn/+h5o/7x7vt5X/fr199PlUrTr1+/d3qm+3vPPfecc0VVQQghJDv0tNsAQggh\ndqGwE0JIxqCwE0JIxqCwE0JIxqCwE0JIxqCwE0JIxrAm7CKSE5EnROR7tq5JCCEkPDY99s0ADli8\nHiGEkAhYEXYRGQLwPgB32rgeIYSQ6OQtXefLAG4C0Gc6QUQ2AtgIAPNOO23lWxctsnRrQgjpDvY+\n99xLqrrQ77zYwi4i7wdwRFV/LiKXmc5T1W0AtgHAivPO04e3bIl7a0II6Srmb9z4XJDzbIRiRgBc\nJSL/AeBeAJeLyN0WrksIISQCsYVdVT+lqkOqeh6AawA8pKrXxraMEEJIJJjHTgghGcPW4ikAQFUf\nAfCIzWsSQggJBz12QgjJGBR2QgjJGBR2QgjJGBR2QgjJGBR2QgjJGBR2QgjJGBR2QgjJGBR2QgjJ\nGFYLlDqVnaUi7jjWhxcrOSzKT2HTghLW9k202yxCCIlE1wv7zlIRtxw9A5NanbyMV/K45egZAEBx\nJ4R0JF0firnjWN+sqDtMag/uOGZsLU8IIamm64X9xUou1HFCCEk7XS/si/JToY4TQkja6Xph37Sg\nhF6ZrjvWK9PYtKDUJosIISQeXb946iyQMiuGEJIVul7Ygaq4U8gJIVmh60MxhBCSNSjshBCSMWIL\nu4j0ishPRWSfiIyKyGdtGEYIISQaNmLsvwFwuaq+LiIFAI+JyAOq+mML1yaEEBKS2MKuqgrg9ZmH\nhZl/Gve6hBBComElxi4iORHZC+AIgF2q+hMb1yWEEBIeK8KuqlOqOgxgCMA7RWR54zkislFEHheR\nx18qsfiHEEKSwmpWjKoeB/AwgDUuz21T1Xeo6jvO6mODLUIISQobWTELRaR/5ucigNUAfhn3uoQQ\nQqJhIytmAMB2EcmhOlB8S1W/Z+G6hBBCImAjK+ZJACss2EIIIcQCrDwlhJCMQWEnhJCMQWEnhJCM\nQWEnhJCMQWEnhJCMQWEnhJCMQWEnhJCMQWEnhJCMQWEnhJCMQWEnhJCMQWEnhJCMYaMJGCGJsbNU\nxB3H+vBiJYdF+SlsWlDC2r6JdptFSKqhsJPUsrNUxC1Hz8CkVieW45U8bjl6BgBQ3AnxgKEYklru\nONY3K+oOk9qDO45xoxZCvKCwk9TyYiUX6jghpAqFnaSWRfmpUMcJIVUo7CS1bFpQQq9M1x3rlWls\nWsDN0AnxgounJLU4C6TMiiEkHBR2kmrW9k1QyAkJSexQjIicKyIPi8jTIjIqIpttGEYIISQaNjz2\nCoBPqOovRKQPwM9FZJeqPm3h2oQQQkISW9hVdRzA+MzPJRE5AGAQgFHYXy6eie3DGwJdf8Pe7XFN\nJISQrsJqjF1EzgOwAsBPXJ7bCGAjAMxftDjwNd0GgM3L7sbxe5jy1g2wpQAh4bEm7CLyJgDfBvAX\nqvpa4/Oqug3ANgBYvHSlxrnXbaPXAsOnHtOrTzdRxZktBQiJhpU8dhEpoCrq96jqv9q4Zhi2D2/A\n9uEN6F/PisS04YjzeCUPhcyK885S0fe17WgpsLNUxJXPnY0VvxrAlc+dHchOQtKGjawYAfANAAdU\n9db4JkXnttFrKfApI444t7qlQJxBqBPgoNU92PDYRwD8KYDLRWTvzL+1Fq4bGUfgSfuJI86m1gFn\n9Ey7Ho9LUjOEVgiq3z3SMGhxYGkdNrJiHgMgFmyxjiPujMG3j0X5KYxXmj9mQfq9bFpQwmeO9KPc\n8PF6fVqws1S0Hme3OUNw1hXGZ19bfQ9JrBMEWYvwGrRq7UhqsZrrJa2lK3rF0HtvH3H6vaztm8Bc\nafbOK0gmzm6r6Vitd1wV9PqByfY6QZCZRpBBK0mvni2YW0tXCDtAca+llVPitX0TuHnhqxjIVyBQ\nDOQruHnhq4G9tNfU/SOaRJzdVtMxNxFrxKb944Zr1R4PMmglKb5swdxaukbYAYo70JpYa+PAAQAP\nvPkInvjtcTzw5iOhpt6tbN0bdxByiLN+EAXTl7j2eJBBK0nxZQvm1tJVwg5Q3JOeEtseOFrdundt\n30TkQcjBT6xs229aSq49HmTQSlJ82YK5tXSdsAPdLe5JT4ltDxy2vOhWhp/cRAzQ2X+nIVZ9XhMD\nBuFtPO43aCUpvrb+jiQYXdu2d/vwhq7MlomTpRKEJAaOuK17W52R0dhH/oyeabw+LajM+FGvas7q\n/TctKNW9PyCaICfd/54tmFtH1wo70J3ibksETNgcOIKm3rmd9ycfOzn7/Oe+NIBJnax7zaT24HOl\nARy99NLQdgHVfkUAjD2LakXsyufOxvHp+oHNLdUwKjYFmeKbDbpa2AGgf32uqxqKJe2V2Ro4gnrZ\nO0tF3PzymahMTc+ed/PLZ+JHD1yEpYsHAACliV2u9yhNTLoeD8Jto9dWfxhufq6xSV0rMkIoyKSW\nrhf220avxQZ0l9ceVQSCeNC2Bg5TrL7Ry75z56OoTNULdGVqGnv2P4Orc3swcnArNvWO4YXpM/HF\nygdx3/S7Zs/rK/aGsikojU3q3vTCo66DCDNCSFJ0vbAD3RmSCUuYOLUN79HkzTYKpMnrfs9vdmPV\nU3ehMFW1Y6jnJXy+cCdQBu6bfhfyuR6MLL/AeP8lYzswcnAr+ibGUCoO4tmFq3H+0V2zj/dcuAWH\nBtcFei8jyy/A7l88PTurAIBiYRqb5jMjhCRDV2bFuMHGYd60qnKwf30O24c34E1F96yVRi/b5HV/\ncs6/zIq6w1w5iZvy30JfsRer3n4qVNPIkrEdWPXUjTh94jAEitMnDuOS5++qe7zqqRuxZGxHoPe0\ndPEAVr39ollb+4q9ePfw23D00g92dYYWSQ567DN0Y0gmDEnGievEbbT6n5uX6+Zlm84bwEuu9xrs\neRkfXeu9YDpycGvToNDYDKkwNYGRg1sDe+1LFw8YB5La98+ZI7EBhb0GhmTM2E6T7F+fO7UA6YIj\ngnv2P4PSxCT6ir0YWX5Bkziazis9M4jTJw43XbdUHKx73Bhy2XPhFvRNjAV6D0HPC4Mj8o0LsNxJ\nioSBwk4CYSvbZdY7HfU/18vL9TtvT24LVj11Y53nXc4VsefCLbOPnZCLc44TYpko9GNu+RXf+zYO\nEjZxFmA3L7sb//vrc9gZkYSCwt4AvXZ34ma7tDqW7IRIGr3x2tCJW8ilMDWBSk8R5Vyx7jlFfTim\ncZBoxG0mEDRsU8tto9fiztKjrnn4tvLgSfagsJPARMl2aefiYKO4jxzcWnfcFErpLb+CB4e/OvO6\nwwAEUtMGQCEYHbzGKNSmmUDtvcNgyvxhZ0RiglkxLjBTIT7OPrStYMnYDnz4oRW44f6z8eGHVsxm\nq7hlt9Rms5hCKaXiIA4NrsNdlz+BUnGoTtQBQKA4/6h70RNgngk4A0tYTJk/zIMnJijsxCrbhzfg\n3xfOcxXaJPASbz+B3XPhFpRz9WmVjSEWk1fvtXAa5TVejCy/APlc/Vc1n+vBJStcyl4JgSVhF5F/\nEpEjIrLfxvXSAL32cDgeup+XHAaTJ16LSbzfPfrpmTBKM47AHhpch90X34rXikNQCF4rDmH3xbfW\nhUu8vHoTUV7jhVsevJOHz88pccNWjP2bAL4C4H9Zuh7pIGrFxctLDhNfDhqnNnnBxfIrxo14awX2\n0OA6T7v2XOidXeO2SOr3mij45cE3pkeS7saKx66qPwJwzMa10gSrUb1xi6PbCkMEjVNPFPpdX28S\n9bAC6+XVm2YnAHxnAra5bfRafHLBFS3rOU/STcuyYkRkI4CNADB/0eJW3TYWrEY1YwoBlIrBCoP8\nCDJALBnbgTmVN5rOaUxNrD0eRWBNXv27Rz9tHHzuuvyJRIW8kQPPj89U4Fa/0sx1725aJuyqug3A\nNgBYvHSl3S1kiCc2qxb9YrpRwxCNIY3JwnwUy82TwNoBYuTgVuT1ZNM5ih6Iy4ZxpeKQNbF991M3\noWgoYkqiItWPPfufqWurADDXvZthHnvGsbl7UJCFuiCFQY24xdMrUkBF5tQJd9CMFcF0U4FR3Bh3\no72XPP/NQDH8VsFcd1IL0x196PSsA1tdGcP8Hpwc8NvfdyRQSMItnp7XMk7m53nGqU3x9dLMuUnF\nuEcObm3KbXdQwNoAEgZTrvs5Z5i2uiZZxorHLiL/DOAyAGeJyGEAn1HVb9i4NolHnK6MhTd+jt7S\nA+iZehUfPvZlX8/7wPPjvk273DBnthzH7Vcccn3OFF+vSGHWzqRi3F6hlsnCgpbG1h1MXS4vXrIc\n2xcPsE1Gl2ErK+aPVXVAVQuqOpQ1Ue9kr91UnehXtVh44+eY9/oO5KaOB8pHdxbvnJBAaWISu3/x\nNA48P+5rozl0oZ75627x9XK+L3FhNdmrEDyyLFp1aVy8ct0BZnh1GwzFZJxNC0rolfrpeJCujPOm\nHwQq5bpjXmXxbot3zhZ1frhVgALVzBbTgOLV5wUIVtwUFTd7FYJ9iz8Ue1CJY/fSxQP46NpL8Zcf\nWI2Prr20brZ02+i1FPcugounGeJU6OQ4pnP9mOy7Emv7VgII15Vx+/AG3HD/f3NdHDQJqmnxLsiG\n0Y4YXja6Bb3lY4E2tfBKqwxa3BS1A2OUBeIguNm9Zu91WLP34ygVh4z3qA2B9c4pQFXxm3KlKRx2\n2+i12LyehUzdAIU9IP3rc6n+QhTe+DnmvroDolUvOzd1HHNf3YETANb2rQydARM2H72v2Osq4qcV\ngn3EDg2uw8jBra4pjkDzgOKVVhmk+tUk/gPHfhpob9OoMXyvwcR95yats8+5N1AV9Ef2HcTkyVMz\nq9qfnXAYgDpxZ21G9mEoJiP0lh6YFXUH0TJ6Sw8Evoaz3ygQrEFWLW9ZdJbr8fLUVKA4O+C9KNk4\noHhVhAYpbjKJ/yXPf9NKnxs3/Pro+OW/14bCnDWNWiF3wy0c1slrRiQYFPaAeG3jlgZ6po6HOu5G\n7XsM0iDL4cDz43j6+Rdcrzk9rb5xdieuDGMKobgOKKa0yiBNuMw58PU2BGm3GzQu7tcmIUj+u2O3\n25qGCbeZlC1x31kqpq6NQRptajUU9owwnXPP6TYdb8Ttix40H91PZLzi7PVebDNRFiX3XLgFFSnU\nHXPSIGdtClFE1Ddx2CjWYbpZ+s0kTIvItTh2B1m7mL2+Icc9rrg7xW/jlTwUMlv81k4hTaNN7YDC\nnhEm+66ENoiZSgGTfVf6vjbuF9xPZEzCArh7sUDVd3+tOIQHh7+KH178xQhWNQ4T9Y/dM1vMVzKJ\ndZhNNfxmEocG12F08BqjHbWhsP/S+1M8NucGPHvan+CxOTfgqp7HXF+Tz/VgZPkFhivGI2jxWys9\naFsFeZ0OhT0jlOetxIkz1mEq1w8FMJXrx4kz1qE8b6Xn62ykwHkJt5+wmOPKErmRlluOe15P1olt\nY6hpWnLGFgGAWazNPd+bjwdZt1gy/m+udkyjp66r5C3ydQz1vIQeAYZ6XsLnC3c2iXtjLrsbcQb1\nIMVvrfag4xTkZQlmxYQg7Rtdl+et9BXyRmysHbhVPQLVjJj3DP8nT2HxS1uMklIYtHVwbWbLDfef\nHeC6h/Hhh1bU2aOSg2hztpRKs5AESZM0NRYTTNe9/rSGza3nyknclP8W7jv5rqqtxV58dO2lvu8J\niP65XpSfwnilWUJqi9+8POgkmpMFsakboMfexdhaQHOrelzzO8tx3VXv8W0pYIqHP7twdeSdmEw9\nZEzHgaAxd2myx03UATQddxZY1+y9DgDw4PBXI89ITAPXOfIygGjhlygztyDFb632oKMW5GUNeuwx\ncCsICusxtwvbKW9eO/z40xwPXzL+b66x6/fuux4APAVRDEEV03HAPS++FoW4ZsxMGzz2UnFo9ueg\nBVNAtdeMWy7/ZGHB7M8ThX7MdfHsX9AzQ/XoqSVKfrvjcXsVv7Xagw5iUzdAYY+IV0FQp4h7GjDF\nw3Pl5j4wANCjU76FRL2GcIbpONAcJpko9EMg6C2/glJx0BhLF53ybREcZrvAR5Ztxep9m+t+JxWZ\nM9uDxqv52VNv/xt8dDBY+MWNKCGZtX0TnqK5aUGprm00kLwH7WdTN0Bhj4hXQVCahX1nqYjPlQZQ\n+tWuyN6dTaJsSuEUEpmqMqPu4mSqJl0ytmMmhNKcr+KU+nvFzcNsF+gXh/dqfvbdqRHs2flo6O6a\ntdiusKYH3R4o7CFxPvg2CoJazalNN+o7MAJom7ibRHiysAD56QljaMRUSHRocJ31zaRN/dedwim/\n9gJhBxqv63k1P6tdwI76t02i5QA96NbDxdOIxC0IagduGQpBOzAmhSkF8JFlW7H74lsx7ZJdYsIR\nPb8NqMN2TzSFYQANtPgZtj1DLY32Thbmu543jrMid9dshC0HOh967BGZ7LuyLsYOBC8IShKv/U1N\nmQhOgVHUjTLiECQFsNH7dlvIBOo9YDevN8wiZi1hUhrdiNoNMuiWgQrBIj2Kx+bcgC9WPoj7pt81\n+1xj8Vg7/sak9VDYI1KetxIngFRlxfjtb/qmYtG1SrSv2Fuzy328qXwUvEIPbqL47MLVWDZ2b6hQ\ny5KxHXjvvuvR0yDQpkXMWrxSGj/80IpAIh2lG6Rpy8AThfk4kT97ZiZRHeREgCGpFiqhjFlxry0e\nC/M3TnvNBvGGoZiQ1Bb0lOetRGnRX+PVwb9DadFft33R1KsYpH99DiPLL0A+V/+8k/McZ6OMpGns\nWfPDi78Yak9Tx/NtFHUHvwXc2tTFWrw2ArGB15aBd13+BErFoaaZi1OoBDTns4f9G3Njjs7F1p6n\nawDcBiAH4E5V/byN65JweBWD3DZ6LZYurj52m4o/+LP9rq8N02wqSdyqUO+6/IlArzX1o3Ewxa0d\n/HLcg3j9Xri9NwBQ6THkyFdDTl6FSm5hlrCbobB3e+cSW9hFJAfgHwCsBnAYwM9E5D5VfTrutUk4\nghSDmAqJTBtlePWBCUvUFgFRY+MOfh65GttuYfYeA8d+WpdiGfYeJtze2+p9NwAQ1xlGbcjJlG2D\nnh48qR9A6ZlB7Mmd+h234m9M0oENj/2dAJ5R1WcBQETuBXA1gNQKe1YXkEzFIJesGPZ9rWmXe7fS\n9Ci/vyVjO+oKb6oCthmAvziHKfBxY7Iw37gzE1Dtz3LD/QsBABOF+fjhsr+dva8zCBUqJ4yiXn1d\nf1MfmSC2meLobkxLri7k5DaTUGB2QGgcAMP8jR1MsXavRXrSfmwI+yCAX9c8PgzgPzeeJCIbAWwE\ngPmLFlu4bTTauUiYNKZikKMB3pfz3v0EO8jvz80zv2x0i2uF6WWj/gIYpsDHDT+PvLbRwNzyK7hi\n7/VQ6ZkV2NMnDnteYQo9mFN5Y7bMP8iM4tTvyJRK6WKnTtddr3FhWaXHc3E46N/YD79FetJ+WpYV\no6rbAGwDgMVLV3p/0xLEawGp04UdcC8GCRolDdLvxev3d3VuD949+mkUy6/MiqUjcnlDfLrXw5N2\nMHncbrFxt0GlWA5XNJbDFNAgkF4tfXswDWkYtLxmFI3hl6C4FTQF6VBZOwBG6enT6LW3umMjCY8N\nYR8DcG7N46GZY6kk7AJSp9O/PgeMep8TJrRi+j295ze7seqpu1zFqjA14eMzn8JNmE0ed+NxUyze\n1DRL4S3YQc83XcNtRmFKu/S7lwLIV97AkrEdxllA1FYKYWHP8/RjI93xZwDeKiJvEZE5AK4BcJ+F\n6yaCaaGokxeQvHao8eu37oRWHMF2QiumDahNv6dPzvmX0B4oUI1pO7htM7dm73XGHuWNnrgpFp+f\nOula+VnbMTGorWGmmo2C6pd2WYugurmG1jyeW37FM7UyToWrH7XVqKbOjN3W8zzNxBZ2Va0AuB7A\n9wEcAPAtVfXxEduHVy53JxJ3h5qwuc2m398AXvK8z2RhgWvfdWehEnAXZoEaPeJG4TTF3AvTb2B0\n8JqmvPdHlm1FReY0nT+FXJOt5VwRP1z2t8ac9kYr3QTVL+2yEcF003v32lw7zAbkcWDP8/RjJcau\nqjsB7LRxraSxtYCUFuLGO8OGppYuHsDvvHI/rjx8KxbpUbwoC/HA0I0ovWxIvcOp3i+Ad1l9mJRB\nN+E0hSIEwPlHdxnz3i8b3TIb6zdlxdTa6tZgbHTwGmMb4Sjvzwuv60SpcA2KE2tnx8b005UtBeJt\nCpEuvOKdQZo5hc1tXjK2A6vGb0EBE4AA5+Ao/mz8FowOXtNU5q+oeuqPLDu1iBilC2ItilOtchuv\ntefCLViz9+OuHr5JDIO0M3A75mS0qOSQn5rA+Ud3+aY4Bnl/QbAdM48COzamG7YU6HDixjvdQisA\n8JZFZ7mfb4hjn390V1MY4MHhr2HbFQcDe5BuMeJGSsUh45ZyhwbXecTNNXA3Rz+c1sCVXBE9OhW4\ntUCQ91dLOTcvsZh5VNhmoDOgsHc4ceOdSxcP4KLF5zQdf/r5F1wXUL1yymt7ujibT4Rpj1sfIw4W\nt27kkWVbXcXTdl8Xr6IpE877C9qKuGf6pOvagI1Qy4Hnx3Hnzkfx99/ehTt3PmpcLG/ExubnJHm6\nMhSTJbzinUHz1//fi80Ln6bc/iApdVFaADSmOT44/DUA4VvdNoZKTIuPccUxStGU8x5Fp5paD7ul\nUua17Lk2EJUsF+mRKhT2DBA33hlmATXI7kRhWgAsGdsxu3jZWNS0++JbI4mac481ez/u+ryNRcyw\nOePNRUk6MyNRlIpDxgpUWwuutcQt0mNL3/TDUExGCbMLTpjc/iApdUG9WUfsijWi7uAX1vDCuW7Q\nNEnTNbx2WgqTM+4UJbmlcjprBqY0yiQWSr2KzMLuLkXSCT12Ero5lK09Pv3yuqN6q17XDRKnDxJK\nCrorUtBe8EFmQlG7Yzbd0yUT6qqex/CFwp0oTpxq0nb5vr+se6+12N70mtiFwk6s5/Y/u3B1U4tb\nR6RqxQk+dZx+3qpJ6EwDggKBFh+DhpKC5Iz7DV7Oe/QbKOK2Lq6zyWUgv6nwLRSlvt/NaTqJd47e\n4np99mpPNxT2kGxedjeO723tPVvRItVWbv+SsR1YNnZvw8KgYHTwGgDNxT0mgmx1ZxI684xhKFb/\ndud4GM/Za9bR+B69BgrTYPPevdfNvjYobgP5OdMvu547v/yi8Tr02tMLhT3ldFqLVFNbgPOP7sL5\nR3f5irriVPWnl1gZhW7f9Xjy3D9rKpaqSAGFygnccP/ZvmLsFUoK6zmbrtXYW90P0wDRA53ZmCO8\nuNcO5C/83zMxJM3ZUS9Mn2m8Br329MLF05Tj1TIgafwWEN3O88ru8AqR1BY1/eMVhyL3aO/RKSwb\nu7cu//tEYT4AmVmkVd98dq+F0bD566Zrff+Sr4QSYq+wVF7LkReaHe7ouRYntL5vzgmdgzt6mLfe\niVDYU06UFqk2qgPdOi26iWHjeV6ZKCZxKhWHZjeqDip2XkLnVMI6xVKV/LymTT6iNtMKm78epjGX\n10BabV9sJm5a5KsXfwRbpjbi8PRZmFbB4emzsGVqI169+COerwuTfUVaB0MxIWl1TDHIPqZJEHQB\nMUjHwtpYsttWboXKCc8+4274bTBdK3ReYmyKl5vi3VF6njdeyxHwxs2r4yyOxk2LXLp4AAewEVfu\nv/zUAvolpxbQa3v2iwCqmF1kJ+mDwp5yTPuYJt0iNahn6hVeAcQ1nl27y5IAKJaPeYqY12KladOK\nWqEzifFkYX5oMQ2SluiFKUZf6Sl6DqQjB7caZ0MVKVjpH2NaQG+sVNWZqYNTsfrIVfNw2ZNvxL4/\nsQdDMSlnbd8Ebl74KgbyFQgUA/kKbl74auILp+awyWDA89zDK4cG16GSnxe4IMkrJHRocB2+f8lX\nmmLYFZmDfOWN2ZDGswtXu8a5FeoqppeNmkUybs9z00zItEWgM3B6DaC7Lrk9sVa9gHulqkNlahr/\n/cHfSuzeJBoU9g5gbd8EHnjzETzx2+N44M1HWpINE7SyMsquPWHi1H6LlY1CO1FYAEAxt/zK7EDQ\nuJjqiLFpZ6be8jHPqsvaZmdh1gVM79ELZ+D0GkCTFHXAf9vIrG4r2clQ2IkrQT3TKB5s0NkAEGwQ\nqBXacn4u8lquO7dxMfVU/xn34IYAsbNMTEwU+g3H53sOkEEG0ChZTEFaB/htG9lX7OUiaspgjD2D\n2GqtGnQ3nrC79oSJU4ddrAxSXNTYdMz9/MOhF3T9WDK2A3MqzbHo2i0CTWsJtipTo1SwulWqOnTy\ntpJZJpawi8gfAfgfAJYCeKeqPm7DKJJtgvZZAcIvVvoVF63et7kp9dENASKX7JsYObjV9d7lfF+g\nHaaiVKYGyWJyCrvW7L3O9W/RWKnamBXjPM9K1PQQ12PfD+APAfxPC7akHrYqtUeY2QAQvC+7V58a\nk7CaKExNYM3ej2Pk4NbIDbeC9MbpNcT6wxA3i8nJLDJ58EFaTrASNT3EEnZVPQAAIl6TWtJOavOP\nO3Xj7qCDgHufGkBnUkWjFPHU7rzk2BKEJWM76tI6vZgo9DfltYcdRIKGrILsu2prMxLSPlq2eCoi\nG0XkcRF5/PXjzT0piH2c/GMna8HJOw66DVqn4d6nBpgz/QZWPXUjJgvzja/17jMZrj+8E8eeG0DU\nK1LAnMobvhW+fsTJYnIjaiVrFvdE3Vkq4srnzsaKXw3gyufOxs5S8H1r24WvsIvIbhHZ7/Lv6jA3\nUtVtqvoOVX3Hm/rdN0omdvHaKSeLeIlRYWoCCkVF5jQ957YtXdjr1+JXjVvbG6ec7wvV7sBE1Cwm\n0/6rUStZs7YnqtOEb7ySh0Jmm/ClXdx9QzGquqoVhhD7hNnyrt3Y2ETCL8xQLB/Hg8Nfnc2KAQBF\nD3rgXnwK/dIfAAANP0lEQVTjdv0g+A0Azq5JAHDD/WdHuoYbUbKYmrfsC1dJm3W8mvClsbuqA/PY\nM0yYLe/aSdCGY374hRlKxUEcGlyHbVccxO3vO4rb33e0Lh7vRRix8xoAGq8TJqc/CeJW0rqRpZz2\nKE340kAsYReRPxCRwwB+D8D9IvJ9O2alj83L7m63CaEZWX4B8rn6P3Ea847DtsI14YjUicL8Jrn2\nypP3QgGcKMwPJXZuA0y1z/yCputEqdy1TZxK2qxjaraXdBO+uMQSdlX9jqoOqeppqvpbqvpeW4aR\n+CxdPIBVb79o1kPvK/Zi1dsvSl1WTNhWuF4cGlyHf7ziEB4c/logL9RdhKt+vBN/ruTnhbah0Qt+\ncPhr2HbFQSuVu51AVhZRNy0ooVfqQ3WtaMIXF1aeBqRTCy9sbXmXJFFa4dbi1XrXD7c8+WcXrq7b\ngSlKumOYatywlbudQFZy2p04etJbU9qGwk4Sx29hNE4rXBubPDcK64cfWhGoipN0B2v7JlIv5I1w\n8ZQkSpCF0TjhCFvx+VpshobaSdhmX7bJ0iJqp0GPnSRK0B4mUcMRSYhw3NBQGgg7k7GRbkrSAz12\nkihJe79JpAu2M1PFlpcdZiZjK93UDXrt7YHCHgA2/4pO0nnatkS4VlBHDm513ZjDy4O1Icg2Bdbm\nZiak82AohiRK3D1C/Qjb/dENt7DFsrF7PcW8NnQxUejHnMobs60BoizgOu/B1qJtmHBS0rMqtvNt\nPfTYSaIkmafteMlr9l4HAHhw+KuRCmzCeqyNnvXc8itW+r3YFNgwM5mkZ1VZ6x/TCdBjJ4mTRJ62\njTRHh7CC6tfky+/1Jmwu2trYzOTZhatjtxMm7YHCTjqSdoUtgOCCHVaQbYet2l2kVcv24Q1cq2oh\nFHYfsvBhzGIqW1AvO8h7t7X9Xi1RBNnGekFUWKSVLSjsGcdmyCJNBPGyg773sILqNhBUpIByvg+9\n5VdiCXJa2gsksaBKr711UNgzjs2QRSux0YYgzHsP29vFuX6WZkG1ZKFIq5uhsGeMnaUi7tz56Owe\npzeo2fNKa4gmiKcdRFyTTONLi2edFEmlqdJrbw0Udg82L7sbx/e224rgONt4TeqpPU5fOO1MDErz\nHrOThfmpDdHYakOQtNfZ6oGxlffrhllJlqGwZwi3bby+UP4gvjDnGyjiN7PHyrkiFJraEI0tT9u2\n11krrJOF+ShUSshrGUDyA2M71kqSmpXQa08eFihlCLftuu6bfhf+6uSfNxUIFcvHXa+Rhg6Gtgpm\nbBZHNRYlFcvHZkXdIckyfJb9kzDQY/eg08qgF+WnMF5p/pM+fNoq3HX5Z+uOjRzcmtrFMZueti2v\nM6mipKBkpZWwA9sMJEvcPU+/JCK/FJEnReQ7ItJvyzASHrdtvEx7nKZhr00TadwuLqmiJC9qG4up\nuH9V0zAQR4FtBpIlrse+C8CnVLUiIl8A8CkAfxXfLBKFtX0T+NGbL8We/c/MZsWMLL/AdWu8tC+O\npS3rJKmiJBONMXXRKSgASeh+7YCx9uSIJeyq+oOahz8GkJ5vYpcSZo/TtIlnmnEvSpqDk/l5KJaP\nWx8Y3UI/guoG26LTqRuISbqwGWP/CID/Y3pSRDYC2AgA8xcttnjbZKAnQWpp9QzHFPoRncbt7zuS\nyD3bAb32ZPAVdhHZDWCRy1NbVPW7M+dsAVABcI/pOqq6DcA2AFi8dKVGspaQNtLKGQ4rP0kcfBdP\nVXWVqi53+eeI+ocAvB/AelWlYBNigTQvbtuG2+fZJ1YoRkTWALgJwLtV9YQdkwghaV/cJukmboz9\nKwBOA7BLRADgx6r6sdhWEUK6anGbsXa7xM2KaU6QzgCd1iOGEEJqYUsBQkgq6F/f3BKDRIPC7gJL\nnQlpPaxGtQeFPUPQ4yGdDjNk7EBhJ4SQjEFhJ4SkCnrt8aGwN9DJKVeMUZKswLBiPCjshJDUQScl\nHhR2QkgqYUgmOhT2jMCpKyHEgcJOCEktdFiiQWGvgQunhKQLfq6jQWEnhKQaxtrDQ2EnhJCMQWEn\nhKQeeu3hoLDPsHnZ3e02gRDiARdSg0NhzwD0Zkg3wIXU4MTdQSkzsFUvSZIlYzu4zR1pGfTYCUmY\nJWM7sOqpG3H6xGEIFKdPHMaqp27EkrEd7Tat4+DsNBixhF1E/kZEnhSRvSLyAxE5x5ZhhGSFkYNb\nUZiaqDtWmJrAyMGtbbKos2Gs3Z+4HvuXVPVtqjoM4HsAbrZgEwkBP+Tpp29iLNRx4g1j7f7EEnZV\nfa3m4TwAGs+c9sCMGJIkpeJgqOPEHzo03sSOsYvIVhH5NYD16FCPvZMXTum9pJ89F25BOVesO1bO\nFbHnwi1tsqjz4efeG19hF5HdIrLf5d/VAKCqW1T1XAD3ALje4zobReRxEXn89eMv2XsHhKScQ4Pr\nsPviW/FacQgKwWvFIey++FZmxZDE8E13VNVVAa91D4CdAD5juM42ANsAYPHSlR0ZsiEkKocG11HI\nLbN9eENHN+5LkrhZMW+teXg1gF/GM4eEgXFGQogbcQuUPi8iFwKYBvAcgI/FN6m1bF52N47vbbcV\n0WCckRDiRixhV9UP2DKEEELC0r8+19HJD0nR9ZWn/FAQQrJG1ws7IYRkja4WdhYmEdLZcJ3Jna4W\n9k6GzZAIISa6WtgZXyeks+Gs252uFnZCCMkiFHZCSMfCWbc7XSvsnV6KzCkoIcRE1wp7p0NPhXQ7\nne6cJQmFnRDScVDUvelKYWcYg5DOhaLuT1cKe1bCGPyAk26Dn/lgdKWwZwnOPkg3sGHvdop6COK2\n7e04svbhOH7PFDZgOytRSSbJ2ve1VXSdsGeVDXsp7iQbUMzj01XCnvUPDMWddCpZ/262mq4S9m7A\n+YJQ4EmaoZAnS9cIeydvgReF2i8ORZ60i83L7s5MFlon0TXC3s0fLoo8SRqTB95NzlSasCLsIvIJ\nAH8HYKGqvmTjmjbhtO8Ubr8Lij3xgt+fziO2sIvIuQCuAPB8fHPs020hmCi4fXH71+cAcIeaLFJb\n+9DNM9ksY8Nj/3sANwH4roVrWYcf3Gg4v7cN8PbW6O23j6jxazo62UdUNfqLRa4GcLmqbhaR/wDw\nDlMoRkQ2Atg483A5gP2Rb9w6zgKQutCSC7TTHp1gI0A7bdMpdl6oqn1+J/kKu4jsBrDI5aktAD4N\n4ApVfdVP2Buu+biqvsPvvHZDO+3SCXZ2go0A7bRN1uz0DcWo6irDDS4G8BYA+0QEAIYA/EJE3qmq\nL4a0lxBCiCUix9hV9SkAZzuPw3jshBBCkqNd3R23tem+YaGddukEOzvBRoB22iZTdsZaPCWEEJI+\n2I+dEEIyBoWdEEIyRtuFXUQ+ISIqIme12xY3RORvRORJEdkrIj8QkXPabVMjIvIlEfnljJ3fEZH+\ndtvkhoj8kYiMisi0iKQutUxE1ojIQRF5RkQ+2W573BCRfxKRIyKS6joQETlXRB4Wkadn/uab221T\nIyLSKyI/FZF9MzZ+tt02eSEiORF5QkS+53duW4U97e0IZviSqr5NVYcBfA/Aze02yIVdAJar6tsA\nHALwqTbbY2I/gD8E8KN2G9KIiOQA/AOAKwFcBOCPReSi9lrlyjcBrGm3EQGoAPiEql4E4HcB/NcU\n/j5/g2qB5SUAhgGsEZHfbbNNXmwGcCDIie322J12BKldwVXV12oezkMKbVXVH6hqZebhj1GtKUgd\nqnpAVQ+22w4D7wTwjKo+q6onAdwL4Oo229SEqv4IwLF22+GHqo6r6i9mfi6hKkiD7bWqHq3y+szD\nwsy/1H2/AUBEhgC8D8CdQc5vm7DPtCMYU9V97bIhKCKyVUR+DWA90umx1/IRAA+024gOZBDAr2se\nH0bKhKhTEZHzAKwA8JP2WtLMTHhjL4AjAHapaupsnOHLqDrB00FOTrQfe5B2BEnePyhedqrqd1V1\nC4AtIvIpANcD+ExLDYS/jTPnbEF1CnxPK22rJYidpHsQkTcB+DaAv2iY/aYCVZ0CMDyzLvUdEVmu\nqqlavxCR9wM4oqo/F5HLgrwmUWHvlHYEJjtduAfATrRB2P1sFJEPAXg/gN/XNhYnhPhdpo0xAOfW\nPB6aOUYiIiIFVEX9HlX913bb44WqHheRh1Fdv0iVsAMYAXCViKwF0AvgdBG5W1WNPbXbEopR1adU\n9WxVPU9Vz0N12vv2NPaYEZG31jy8GsAv22WLCRFZg+o07SpVPdFuezqUnwF4q4i8RUTmALgGwH1t\ntqljkarH9g0AB1T11nbb44aILHQyyESkCGA1Uvj9VtVPqerQjFZeA+AhL1EH2r942gl8XkT2i8iT\nqIaOUpe2BeArAPoA7JpJy/x6uw1yQ0T+QEQOA/g9APeLyPfbbZPDzOLz9QC+j+pC37dUdbS9VjUj\nIv8M4N8BXCgih0Xkz9ttk4ERAH8K4PKZz+TeGY8zTQwAeHjmu/0zVGPsvqmEnQBbChBCSMagx04I\nIRmDwk4IIRmDwk4IIRmDwk4IIRmDwk4IIRmDwk4IIRmDwk4IIRnj/wMKIeYwsrNr4QAAAABJRU5E\nrkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x11a8b98d0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_decision_boundary(poly_log_reg3, axis=[-4, 4, -4, 4])\n",
    "plt.scatter(X[y==0,0], X[y==0,1])\n",
    "plt.scatter(X[y==1,0], X[y==1,1])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Pipeline(steps=[('poly', PolynomialFeatures(degree=20, include_bias=True, interaction_only=False)), ('std_scaler', StandardScaler(copy=True, with_mean=True, with_std=True)), ('log_reg', LogisticRegression(C=0.1, class_weight=None, dual=False, fit_intercept=True,\n",
       "          intercept_scaling=1, max_iter=100, multi_class='ovr', n_jobs=1,\n",
       "          penalty='l1', random_state=None, solver='liblinear', tol=0.0001,\n",
       "          verbose=0, warm_start=False))])"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "def PolynomialLogisticRegression(degree, C, penalty='l2'):\n",
    "    return Pipeline([\n",
    "        ('poly', PolynomialFeatures(degree=degree)),\n",
    "        ('std_scaler', StandardScaler()),\n",
    "        ('log_reg', LogisticRegression(C=C, penalty=penalty))\n",
    "    ])\n",
    "\n",
    "poly_log_reg4 = PolynomialLogisticRegression(degree=20, C=0.1, penalty='l1')\n",
    "poly_log_reg4.fit(X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.82666666666666666"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "poly_log_reg4.score(X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.90000000000000002"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "poly_log_reg4.score(X_test, y_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nxvj/g7iLF1qtL0oAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x107eddb38>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_decision_boundary(poly_log_reg4, axis=[-4, 4, -4, 4])\n",
    "plt.scatter(X[y==0,0], X[y==0,1])\n",
    "plt.scatter(X[y==1,0], X[y==1,1])\n",
    "plt.show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
